%% ===================================================================
%% 这是一个EMQX的RabbitMQ插件的命令行接口模块
%% 主要提供了重载配置的命令行功能
%% ===================================================================

%% 定义模块名称
-module(emqx_plugin_rabbitmq_cli).

%% 导出两个公共函数:
%% cmd/1: 处理命令行命令
%% unregister_cli/0: 注销命令行接口
-export([cmd/1, unregister_cli/0]).

%% @doc 处理重新加载配置的命令
%% 当接收到 ["reload"] 参数时,重新加载配置
%% 类似于Java中的方法重载,这里是模式匹配的用法
cmd(["reload"]) ->
    %% case语句类似于Java中的switch语句
    case emqx_plugin_rabbitmq:reload() of
        %% 重载成功时打印成功信息
        ok ->
            emqx_ctl:print("RabbitMQ plugin configuration reloaded successfully.~n");
        %% 重载失败时打印错误原因
        {error, Reason} ->
            emqx_ctl:print("Failed to reload RabbitMQ plugin configuration: ~p~n", [Reason])
    end;

%% @doc 处理其他未知命令
%% '_'是通配符,匹配所有其他情况
%% 显示插件使用帮助信息
cmd(_) ->
    %% 显示命令使用说明
    emqx_ctl:usage([{"emqx_plugin_rabbitmq reload", "Reload RabbitMQ plugin configuration"}]).

%% @doc 注销CLI命令
%% 在插件卸载时调用,清理命令行注册
unregister_cli() ->
    emqx_ctl:unregister_command(emqx_plugin_rabbitmq).
